package com.goldgov.conference.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.goldgov.conference.service.ConferenceStat;
import com.goldgov.conference.service.ConferenceStatQuery;
import com.goldgov.synchronous.service.ConferenceSynchronous;

@Mapper
public interface ConferenceStatDao {
	
	/**
	 * 支部首页统计 START
	 */
	/**
	 * 当前登录党员所在支部统计
	 * @date 2018年8月24日 下午2:50:15 
	 * @author hanxiangyu
	 * @param conferenceStat
	 * @return
	 */
	ConferenceStat getPortalPartyBranchStat(ConferenceStat conferenceStat);
	
	/**
	 * 同级党支部排行情况统计
	 * @date 2018年6月20日 下午3:54:57 
	 * @author hanxiangyu
	 * @param conferenceStat
	 * @return
	 */
	List<ConferenceStat> getPortalPartyORankStat(@Param("query")ConferenceStatQuery query);
	/**
	 * 支部首页统计 END
	 */
	
	
	
	/**
	 * 本支部组织生活统计分析
	 * @date 2018年6月19日 下午7:26:49 
	 * @author hanxiangyu
	 * @param conferenceStat
	 * @return
	 */
	ConferenceStat getPartyOrganizationLife(ConferenceStat conferenceStat);
	/**
	 * 会议出勤情况
	 * @date 2018年6月20日 上午9:57:33 
	 * @author hanxiangyu
	 * @param conferenceStat
	 * @return
	 */
	ConferenceStat getAttenanceStat(ConferenceStat conferenceStat);
	
	/**
	 * 同级党支部排行情况统计
	 * @date 2018年6月20日 下午3:54:57 
	 * @author hanxiangyu
	 * @param conferenceStat
	 * @return
	 */
	List<ConferenceStat> getPartyOrganizationRank(@Param("query")ConferenceStatQuery query);
	/**
	 * 同级当前登录人同级支部的情况
	 * @date 2018年6月25日 下午1:55:11 
	 * @param conferenceStat
	 * @return
	 */
	List<ConferenceStat> getPartyOrganizationByAdmin(@Param("query")ConferenceStatQuery query);
	
	
	/**
	 * 获取会议记录列表管理员
	 * @param query
	 * @return
	 */
	List<ConferenceStat> getBranchStudy(@Param("query") ConferenceStatQuery query);
	/**
	 * 获取各季度各种会议数
	 * @param conferenceStat
	 * @return
	 */
 List<ConferenceStat> findPartyOrganizationLife(@Param("query")ConferenceStatQuery query);
 /**
  * 获取机构数量
  * @param scopeCode
  * @return
  */
 int findOrgNum(String scopeCode);
 
	/**
	 * 统计某类型课完成度
	 * @param query
	 * @return
	 */
	List<ConferenceStat> countConferencePercentage(@Param("query")ConferenceStatQuery query);
	
	/**
	 * 会议材料数量分布
	 * @param query
	 * @return
	 */
	ConferenceStat countConferenceAttachPercentage(@Param("query")ConferenceStatQuery query);
	List<ConferenceStat> countConferenceAttachPercentage2(@Param("query")ConferenceStatQuery query);
	
	/**
	 * 各类型会议完成度（最终版）
	 * @param query
	 * @return
	 */
	List<ConferenceStat> countConferencePercentageAvg(@Param("query") ConferenceStatQuery query);
	
	/**
	 * 类型会议完成数量占比
	 * @param query
	 * @return
	 * @throws Exception
	 */
	ConferenceStat countConferencePercentageBynum(@Param("query")ConferenceStatQuery query) throws Exception;
	/**
	  * 获取机构数量
	  * @param scopeCode
	  * @return
	  */
	 int findOrgNumById(String organizationId);
	 
	 /**
	 * 各类型会议完成数量机构详情
	 * @param query
	 * @return
	 * @throws Exception
	 */
	List<ConferenceStat> findConferencePercentageByOrg(@Param("query")ConferenceStatQuery query) throws Exception;
}
